package git.LengNanJun.day319.demo1;

/*
* 创建三个类，这三个类拥有祖孙三代的继承关系，再利用多态的概念实例化对象，
* 再利用instanceof关键字在对这几个类进行类型转换时进行判断，
* 并且在孙子类中重写toString方法，输出所有的类的属性内容。
* */
public class Main {
    public static void main(String[] args) {
        Animal animal = new SmallDog("大黄", "黄色", "牧羊犬", 10,"小型");
        Animal animal1 = new Dog("大灰狗", "灰色", "田园犬", 2,"中型");

        // 判断是否是子类
        if(animal instanceof SmallDog){
            SmallDog smallDog = (SmallDog) animal;     // 向下转型
            System.out.println(smallDog);    // 使用重写的 toString()方法展示所有类的属性
        }else{
            System.out.println("转换失败");
        }

        // 判断是否是子类
        if(animal1 instanceof Dog){
            Dog dog = (Dog) animal1;  // 向下转型
            dog.protect();    // 使用子类 Dog 特有的方法
        }else{
            System.out.println("转换失败");
        }
    }
}
